The invention relates to a work queue alias system and method to allow for work queue fabric management packets on all ports of a host channel adapter.
In the rapid development of computers many advancements have been seen in the areas of processor speed, throughput, communications, and fault tolerance. Initially computer systems were standalone devices in which a processor, memory and peripheral devices all communicated through a single bus. Later, in order to improve performance, several processors were interconnected to memory and peripherals using one or more buses. In addition, separate computer systems were linked together through different communications mechanisms such as, shared memory, serial and parallel ports, local area networks (LAN) and wide area networks (WAN). However, these mechanisms have proven to be relatively slow and subject to interruptions and failures when a critical communications component fails. Further, many of these types of architectures have lacked the flexibility to add or delete hardware without significant software reconfiguration.
One type of architecture of many that has been developed to improve throughput, allow for parallel processing, and to some extent, improve the robustness of a computer network is called a hypercube. Hypercube is a parallel processing architecture made up of binary multiples of computers (4, 8, 16, etc.). However, adding or deleting components in binary multiplies may prove to be overkill if all one needs is a single additional processor or device.
A hypercube like architecture, and many other types of networks and computer architectures, work well most of the time, but are inflexible and it is difficult to add or delete components when necessary. One solution to this inflexibility problem can be found in the new operating systems, such as Windows 2000(trademark), in which each time the operating system is started a request for acknowledgment message is broadcast to all devices and each device responds to indicate it is present. This type of system works well when each device uses a single input port to interface to the computer system or network. When each device has a single input port, a generic request for acknowledgment can be sent to all devices. However, matters are complicated by the fact that the newer communications devices, such as switches and adapters, may have as many as four, eight or more full duplex ports. In a system or network in which a request for acknowledgment is sent to each port and a single switch or adapter has several ports, then a generic request for acknowledgment would be overwritten in the memory of the switch or adapter by each successive request for acknowledgment received by another port on the same device. This occurs because under normal operations a data packet sent to a port will have a memory location in its header where the data in the packet is to be written to in the memory of the device. However, in a request for acknowledgment the software does not know what devices, ports or memory locations exist in the system and thus the memory location specified has a zero value in the header portion of the request for acknowledgment data packet. Therefore, as each request for acknowledgment arrives at each port of the same device it overwrites the previous request since all these data packets specify memory location zero. This causes only a single response to be generated by the device and the system is not properly configured to recognize all ports on a given device.
Therefore, what is needed is a device and method that will, upon receipt of a request for acknowledgment at a given port in a device that has many ports, prevent other requests for acknowledgment from overwriting prior requests. Further, what is needed is, once each port on a device has received a request for acknowledgment, for the device to be able to respond with an acknowledgment from each separate port.